package com.atguigu.srb.core.controller.api;


import com.atguigu.srb.base.result.R;
import com.atguigu.srb.core.pojo.entity.LendItem;
import com.atguigu.srb.core.service.LendItemService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;

/**
 * <p>
 * 标的出借记录表 前端控制器
 * </p>
 *
 * @author Atguigu
 * @since 2023-01-04
 */
@RestController
@RequestMapping("/api/core/lendItem")
public class ApiLendItemController {
    /*
        投资接口：
            1、校验：
                用户状态
                用户账户余额
                标的状态：募资中
                标的是否满标： 用户本次投资金额+标的已投金额<=标的总金额
            2、保存投资记录：lend_item
            3、生成访问hfb投资的接口自动提交表单让浏览器访问

        回调接口：
            1、校验：
            2、扣除投资人账户余额： 扣除账户余额，加到冻结金额中
            3、更新投资记录的状态为已支付
            4、更新标的的已投人数+已投金额
     */
    @Resource
    LendItemService lendItemService;

    @ApiOperation("标的投资列表")
    @GetMapping("/list/{lendId}")
    public R listByLendId(@PathVariable("lendId")String lendId){
        return R.ok().data("items" , lendItemService.list(Wrappers.lambdaQuery(LendItem.class)
                .eq(LendItem::getLendId,lendId)));
    }

    ///api/core/lendItem/notify
    @ApiOperation("投资回调")
    @PostMapping("/notify")
    public String investNotify(HttpServletRequest request){
        return lendItemService.investNotify(request);
    }
    @ApiOperation("投资")
    @PostMapping("/invest")
    public R invest(@RequestHeader(value = "token",required = false)String token,
                    String lendId , BigDecimal investAmount){
        String form = lendItemService.invest(token,lendId,investAmount);
        return R.ok().data("form",form);

    }
}

